import useTagsViewStore from '@/store/modules/tagsView'
import router from '@/router'

export function refreshPage(obj) {
  const { path, query, matched } = router.currentRoute.value
  if (obj === undefined) {
    matched.forEach((m) => {
      if (m.components && m.components.default && m.components.default.name) {
        if (!['Layout', 'ParentView'].includes(m.components.default.name))
          obj = { name: m.components.default.name, path, query }
      }
    })
  }
  return useTagsViewStore().delCachedView(obj).then(() => {
    const { path, query } = obj
    router.replace({
      path: `/redirect${path}`,
      query,
    })
  })
}
// 关闭当前tab页签，打开新页签
export function closeOpenPage(obj) {
  useTagsViewStore().delView(router.currentRoute.value)
  if (obj !== undefined)
    return router.push(obj)
}
// 关闭指定tab页签
export function closePage(obj) {
  if (obj === undefined) {
    return useTagsViewStore().delView(router.currentRoute.value).then(({ visitedViews }) => {
      const latestView = visitedViews.slice(-1)[0]
      if (latestView)
        return router.push(latestView.fullPath)

      return router.push('/')
    })
  }
  return useTagsViewStore().delView(obj)
}
// 关闭所有tab页签
export function closeAllPage() {
  return useTagsViewStore().delAllViews()
}
// 关闭左侧tab页签
export function closeLeftPage(obj) {
  return useTagsViewStore().delLeftTags(obj || router.currentRoute.value)
}
// 关闭右侧tab页签
export function closeRightPage(obj) {
  return useTagsViewStore().delRightTags(obj || router.currentRoute.value)
}
// 关闭其他tab页签
export function closeOtherPage(obj) {
  return useTagsViewStore().delOthersViews(obj || router.currentRoute.value)
}
// 打开tab页签
export function openPage(url) {
  return router.push(url)
}
// 修改tab页签
export function updatePage(obj) {
  return useTagsViewStore().updateVisitedView(obj)
}

export default {
  refreshPage,
  closeOpenPage,
  closePage,
  closeAllPage,
  closeLeftPage,
  closeRightPage,
  closeOtherPage,
  openPage,
  updatePage,
}
